package com.echo.im.domain.privates.message;


import com.baomidou.mybatisplus.extension.service.IService;
import com.echo.im.common.vo.message.PrivateMessageVO;

import com.echo.im.domain.common.MessageDTO;
import com.echo.im.domain.privates.dto.PrivateMessagePacket;
import com.echo.im.domain.privates.dto.PullPrivateOfflineMessageDto;
import com.echo.im.repository.dao.entity.PrivateMessage;

import java.util.List;

/**
 * 私聊消息服务接口
 * @author echo
 */
public interface PrivateMessageService extends IService<PrivateMessage> {

    /**
     * 发送消息
     * @param dto 消息数据传输对象，包含发送消息的相关信息
     * @return 返回发送的消息对象，包含消息的详细信息和状态
     */
    void sendMessage(MessageDTO<PrivateMessagePacket> dto);


    /**
     * 拉取离线消息
     * @param dto 拉取离线消息数据传输对象，包含用户ID等信息
     * @return 返回用户的离线消息列表
     */
    List<PrivateMessageVO> pullOfflineMessage(PullPrivateOfflineMessageDto dto);



    /**
     * 查询聊天记录
     * @param friendId 对方用户ID，标识与哪位用户的聊天记录
     * @param lastMsgId 最后一条消息的ID，用于分页查询
     * @param size 每页显示的消息数量
     * @return 返回聊天记录的消息列表
     */
    List<PrivateMessageVO> findHistoryMessage(Long friendId, Long lastMsgId,Integer size);


}

